package io.github.doc.ui;

import com.intellij.util.ui.FormBuilder;
import io.github.doc.config.PluginSetting;

import javax.swing.JComponent;

/**
 * <p>Company: 深圳振瀚信息技术有限公司成都分公司 </p>
 * <p>Description: </p>
 *
 * @param <V> parameter
 * @author ZH.Team
 * @version 1.0.0
 * @email "mailto:ZH.Team@zhxx.com"
 * @date 2025.01.04 13:55
 * @since y.y.y
 */
public interface Wrapper<V, J extends JComponent> {

    /**
     * Key
     *
     * @return the string
     * @since y.y.y
     */
    String getKey();

    /**
     * Gets value *
     *
     * @return the value
     * @since y.y.y
     */
    V getValue();

    /**
     * Gets default value *
     *
     * @return the default value
     * @since y.y.y
     */
    V getDefaultValue();

    /**
     * 获取到对应的组件
     *
     * @return the component
     * @since y.y.y
     */
    J getComponent();

    /**
     * 根据formBuilder进行构建
     *
     * @param formBuilder form builder
     * @since y.y.y
     */
    void builderComponent(FormBuilder formBuilder);

    /**
     * Load
     *
     * @since y.y.y
     */
    void load(PluginSetting pluginSetting);

    /**
     * 重置数据
     *
     * @since y.y.y
     */
    void reset();


    /**
     * 保存数据
     *
     * @since y.y.y
     */
    void save();

}
